void main()
{
    {
        int[3] ok = 3;
        assert(ok == [ 3, 3, 3]);

        ok = 1;
        assert(ok == [ 1, 1, 1]);

        int[][] da2;
        assert(da2 == []);
    }
    {
        int[3][2] a;
        assert(a == [ [ 0, 0, 0 ], [ 0, 0, 0 ] ]);

        int[3][2] b = 4;
        assert(b == [ [ 4, 4, 4 ], [ 4, 4, 4 ] ]);

        // b = 9;
        // assert(b == [ [ 9, 9, 9 ], [ 9, 9, 9 ] ]);

        int[3][2] c = [ 1, 2, 3 ];
        assert(c == [ [ 1, 2, 3 ], [ 1, 2, 3 ] ]);

        c = [ 5, 6, 7 ];
        assert(c == [ [ 5, 6, 7 ], [ 5, 6, 7 ] ]);

        int[3][2] d = [ [ 1, 2, 3 ], [ 4, 5, 6 ] ];
        assert(d == [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]);
    }
    {
        int[3][2][4] a;
        assert(a == [ [ [ 0, 0, 0 ], [ 0, 0, 0 ] ],
                      [ [ 0, 0, 0 ], [ 0, 0, 0 ] ],
                      [ [ 0, 0, 0 ], [ 0, 0, 0 ] ],
                      [ [ 0, 0, 0 ], [ 0, 0, 0 ] ] ]);

        // a = 1;
        // assert(a == [ [ [ 1, 1, 1 ], [ 1, 1, 1 ] ],
        //               [ [ 1, 1, 1 ], [ 1, 1, 1 ] ],
        //               [ [ 1, 1, 1 ], [ 1, 1, 1 ] ],
        //               [ [ 1, 1, 1 ], [ 1, 1, 1 ] ] ]);

        int[3][2][4] b = [ 1, 2, 3 ];
        assert(b == [ [ [ 1, 2, 3 ], [ 1, 2, 3 ] ],
                      [ [ 1, 2, 3 ], [ 1, 2, 3 ] ],
                      [ [ 1, 2, 3 ], [ 1, 2, 3 ] ],
                      [ [ 1, 2, 3 ], [ 1, 2, 3 ] ] ]);

        // b = [ 4, 5, 6];
        // assert(b == [ [ [ 4, 5, 6 ], [ 4, 5, 6 ] ],
        //               [ [ 4, 5, 6 ], [ 4, 5, 6 ] ],
        //               [ [ 4, 5, 6 ], [ 4, 5, 6 ] ],
        //               [ [ 4, 5, 6 ], [ 4, 5, 6 ] ] ]);

        int[3][2][4] c = [ [ 1, 2, 3 ], [ 4, 5, 6 ] ];
        assert(c == [ [ [ 1, 2, 3 ], [ 4, 5, 6 ] ],
                      [ [ 1, 2, 3 ], [ 4, 5, 6 ] ],
                      [ [ 1, 2, 3 ], [ 4, 5, 6 ] ],
                      [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] ]);

        c = [ [ 4, 5, 6 ], [ 7, 8, 9 ] ];
        assert(c == [ [ [ 4, 5, 6 ], [ 7, 8, 9 ] ],
                      [ [ 4, 5, 6 ], [ 7, 8, 9 ] ],
                      [ [ 4, 5, 6 ], [ 7, 8, 9 ] ],
                      [ [ 4, 5, 6 ], [ 7, 8, 9 ] ] ]);
    }
    {
        int[3] val = [4, 5, 6];
        int[3][2][4] a = val[];

        assert(a == [ [ [ 4, 5, 6 ], [ 4, 5, 6 ] ],
                    [ [ 4, 5, 6 ], [ 4, 5, 6 ] ],
                    [ [ 4, 5, 6 ], [ 4, 5, 6 ] ],
                    [ [ 4, 5, 6 ], [ 4, 5, 6 ] ] ]);
    }
    {
        // https://issues.dlang.org/show_bug.cgi?id=10562
        int[3] value = [ 1, 2, 3 ];
        int[3][2] a = value;  // <-- COMPILATION ERROR
        assert(a == [ [ 1, 2, 3 ], [ 1, 2, 3 ] ]);
    }
    {
        // https://issues.dlang.org/show_bug.cgi?id=20465
        int[][3][2] arr;
        assert(arr == [[ null, null, null ], [ null, null, null ]]);

        // int[] slice = [ 1 ];
        // arr = slice;
        // assert(arr == [[ slice, slice, slice ], [ slice, slice, slice ]]);
    }
}
